package com.newrong.yuanze7.inversion.improve;

/**
 * 依赖倒转原则优化
 * 引入抽象接口
 */
public class DependecyInversion {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());// 客户端无需改变
        person.receive(new WeChat());
    }
}

class Email implements IReceiver{
    public String getInfo(){
        return "电子邮件信息：Hello";
    }
}

// 增加多种接受方式
class WeChat implements IReceiver{

    @Override
    public String getInfo() {
        return "微信信息：你好";
    }
}

//完成接受消息的功能
//方式1完成
class Person{
    // 若获取的对象是微信、短信等，person类也需要添加相应的接收方法
    // 优化 ：定义抽象接口 对接口的依赖
    public void receive(IReceiver e){
        System.out.println(e.getInfo());
    }
}

// 定义接口
interface IReceiver{
    public String getInfo();
}